package com.dianzhihan.cashier.service;

import com.dianzhihan.cashier.mapper.ProductMapper;
import com.dianzhihan.cashier.model.product.Product;
import com.dianzhihan.cashier.model.product.ProductParam;
import com.dianzhihan.cashier.model.user.User;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author Dianzhi Han
 * @version 1.0
 * @description: 商品Service类
 * @date 2023/2/9 15:08
 */
@Service
@Slf4j
public class ProductService {
    private final ProductMapper productMapper;

    @Autowired
    public ProductService(ProductMapper productMapper){
        this.productMapper = productMapper;
    }

    //商品上架
    public Product create(User user, ProductParam param) {
        // 1. 构造一个 Product 对象（从 ProductParam 对象）
        Product product = new Product(user, param);
        // 2. 调用 mapper 的 insert，完成数据库插入
        productMapper.insert(product);
        // 3. 返回构造好的对象
        return product;
    }

    //商品列表获取
    public List<Product> getList(){
        return productMapper.selectAll();
    }

    //商品更新
    public Product update(User user, ProductParam param) {
        // 1. 构造一个 Product 对象（从 ProductParam 对象）
        Product product = new Product(user, param);
        // 2. 调用 mapper 的 insert，完成数据库插入
        productMapper.update(product);
        // 3. 返回构造好的对象
        return product;
    }


    //商品输入参数合法性验证
    public void validate(ProductParam productParam, String module, String redirectUrl) {
        productParam.validate(module, redirectUrl,productMapper);
    }


    //商品下架
    public void withdraw(int id) {
        productMapper.deleteById(id);
    }
}
